<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // async
        // 函数的返回值为 promise 对象
        // promise对象的结果由 async函数执行的返回值确定
        // async function main () {
        //     //1. 如果返回值是一个非 Promise类型的属性
        //     // return 521
        //     //2.如果返回的是一个 Promise对象 ,
        //     // return new Promise((resolve, reject)=>{
        //     //     // resolve('ok')
        //     //     reject('err')
        //     // })
        //     //抛出异常
        //     throw 'err'
        // }
        // let result = main()
        // console.log(result)




        // await表达式
        // 1.await右侧的表达式一般为promise对象,但也可以是其它的值
        // 2.如果表达式是promise对象,await返回的是promise成功的值
        // 3.如果表达式是其他值,直接将此作为await的返回

        // async function main () {
        //     //1.右侧为promise的情况
        //     let p = new Promise((resolve,reject)=>{
        //         // resolve('ok')
        //         reject('err')
        //     })
        //     let res = await p
        // console.log(p)
        //     //2.右侧为其它类型的数据
        //     // let res2 = await 20
        //     //3.如果promise是失败的状态,则抛出错误,要用try...catch捕获,在catch中能看到失败的结果
        //     try{
        //         let res3 = await p
        //     }catch(e){
        //         console.log(e)
        //     }
            
            
        // }

        // main()


        async function async1 () {
            console.log('async1 start');
            await new Promise((resolve,reject) => {
                console.log('promise1');
                // reject(11)
                // resolve(11)
            })
            console.log('async1 success');
            return 'async1 end'
        }
        
        async1().then(res => console.log('res',res))
        console.log('srcipt end')
        console.log(async1())


        // let p = new Promise((resolve,reject) => {
        //     console.log(1111)
        // })
        // let p11 = p.then(value=>{
        //     console.log('value1',value)
        // }).then(value=>{
        //     console.log('value2',value)
        // })
        // console.log(p11)
/* await后面的promise状态不是resolve的输出结果
"srcipt start"
"async1 start"
"promise1"
"srcipt end"
*/




    </script>
</body>
</html>